op {
  graph_op_name: "UniformQuantizedDotHybrid"
  visibility: HIDDEN
  in_arg {
    name: "lhs"
    description: <<END
Must be a 2D Tensor of Tlhs.
END
  }
  in_arg {
    name: "rhs"
    description: <<END
Must be a 2D Tensor of Trhs.
END
  }
  in_arg {
    name: "rhs_scales"
    description: <<END
The float value(s) used as scale when quantizing original data that rhs represents.
Must be a scalar Tensor (per-tensor quantization) or 1D Tensor of size (rhs.dim_size(1),) (per-channel quantization).
END
  }
  in_arg {
    name: "rhs_zero_points"
    description: <<END
The int32 value(s) used as zero_point when quantizing original data that rhs represents.
Same shape condition as rhs_scales.
END
  }
  out_arg {
    name: "output"
    description: <<END
The output 2D Tensor of Tout, whose shape is (lhs.dim_size(0), rhs.dim_size(1)).
The output data is the original output data itself (Not quantized).
END
  }
  attr {
    name: "Tlhs"
    description: <<END
The type of lhs input Tensor.
END
  }
  attr {
    name: "Trhs"
    description: <<END
The type of rhs (quantized) input Tensor.
END
  }
  attr {
    name: "Tout"
    description: <<END
The type of output Tensor.
END
  }
  attr {
    name: "rhs_quantization_axis"
    description: <<END
Indicates the dimension index of the tensor where per-axis quantization is applied for the slices along that dimension.
If set to -1 (default), this indicates per-tensor quantization.
For dot op rhs, only per-tensor quantization or per-channel quantization along dimension 1 is supported.
Thus, this attribute must be set to -1 or 1. Other values are rejected.
END
  }
  attr {
    name: "rhs_quantization_min_val"
    description: <<END
The min value of the quantized data stored in rhs.
For example, if Trhs is qint8, this must be set to -127 if narrow range quantized or -128 if not.
END
  }
  attr {
    name: "rhs_quantization_max_val"
    description: <<END
The max value of the quantized data stored in rhs.
For example, if Trhs is qint8, this must be set to 127.
END
  }
  summary: "Perform hybrid quantized dot of float Tensor `lhs` and quantized Tensor `rhs`."
  description: <<END
Given float `lhs` and quantized `rhs`, internally performs quantization on `lhs`, and then performs quantized dot on quantized lhs and `rhs`.
The internal quantization on `lhs` is a quantization to qint8, dynamic range, per-batch (per-axis along axis 0), asymmetric, and not narrow range (the range is [-128, 127]).
`lhs` and `rhs` must be 2D Tensors and the lhs.dim_size(1) must match rhs.dim_size(0).
`rhs` must be quantized Tensor, where its data value is quantized using the formula:
quantized_data = clip(original_data / scale + zero_point, quantization_min_val, quantization_max_val).
END
}
